草庐IT

C++ sizeof 包装类

全部标签

c++ - 在初始化的未知大小数组中使用 sizeof() - C++

我是C++编程的新手,我正在尝试获取数组的大小。谁能解释我为什么会这样?我尝试在runnable.com中运行代码,结果显示相同。我确定这不是正确的方法。如果可能的话,你能建议任何简单的方法来获得这种数组的大小吗?#includeusingnamespacestd;intmain(){intset1[]={1,9,3,50,31,65};intset234[]={3,5,5};cout**编辑:感谢您的回复。飞走了:D 最佳答案 数组的大小等于其所有元素的大小之和。在您的示例中,您处理的是int类型的数组,那么系统中的sizeof(

c++ - sizeof pragma packed bitfield struct 数组

我将VisualStudio2013用于x64系统。我有以下结构:#pragmapack(1)structTimeStruct{intmilliseconds:10;BYTEseconds:6;BYTEminutes:6;BYTEhour:5;BYTEday:5;};#pragmapack()和一个数组:TimeStructstArray[10];当我使用sizeof(stArray);时,我得到80而不是40。我需要知道问题是编译器没有正确打包还是sizeof没有考虑位域的实际大小。谢谢 最佳答案 参见WhatisVC++doin

c++ - 函数包装器中的堆栈分配/函数中的分配

我正在寻找一种将堆栈分配包装在抽象数据类型中的方法。例如,我想要一个可以通过堆栈上的分配严格工作的vector。我最大的障碍当然是alloca仅在当前堆栈框架内工作——因此我看不到将其包装到函数中的简单方法。到目前为止,我看到的唯一方法是使用类似宏的函数,这些函数保证被编译到给定的堆栈帧中。我不喜欢这种方法,因为它不像人们希望的那样类型友好,并且需要比预期更冗长的命名。有没有办法让我在调用者栈上分配一个函数?我知道这通常会破坏立即调用堆栈,因此可能还必须以某种方式强制内联该函数。我不清楚我有哪些选择,所以我正在寻找一些想法,或寻找可能的选择。注释:最终目标是类似于std::vector

c++ - 使用带有自定义释放器的 std::unique_ptr 来包装原始指针

我正在尝试使用libsvm对于某个复杂的应用程序,并且由于libsvm主要是一个C库,因此在加载某些数据后,必须使用自定义API函数来释放内存。这就是我的意思:structsvm_model*model;model=svm_load_model("pathtomodelfile");//dosomeprocessingsvm_free_and_destroy_model(&this->model);这些是我使用的libsvmAPI函数的定义:structsvm_model*svm_load_model(constchar*model_file_name);voidsvm_free_an

c++ - 如何包装 posix_memalign(在 mac 上编译旧代码库)?

我正在尝试在mac上编译一个工具包。它引用了malloc.h的memalign函数,但我能找到的唯一用于mac的关闭函数是posix_memalign。所以我试图将posix_memalign包装成看起来像memalign。我对如何做到这一点感到有点困惑(因为void*和void**指针):posix_memalign的签名是intposix_memalign(void**memptr,size_talignment,size_tsize);memalign的签名是:void*memalign(size_tblocksize,size_tbytes);非常感谢任何指点。(蹩脚的双关语意

c++ - 为 C++ 库创建自动 C 包装器?

假设我有一个C++DLL。AFAIK,没有广泛采用的C++ABI标准,因此为了确保它能正常工作并且不依赖于目标应用程序的编译器,我需要将我的库包装在C接口(interface)中。有没有什么工具可以自动生成这样的界面?如果他们可以围绕C接口(interface)生成包装器,看起来就像是原始的C++对象,那也很好,例如Foo*f=newFoo();//FooWrapper*fw=Foo_create();f->bar("test");//Foo_bar(fw,"test")转换为使用生成的CABI在我的库中调用的C函数。我知道C++是相当复杂的语言,并不是所有的东西都可以轻易地包装在C接

可变参数函数的 C++ Vector 包装器

我有一个看起来像这样的api:templateWidget::Widget(std::stringformat_str,Args&&...args);如果您有一个“args”的字符串vector,即编译时不知道args长度,您将如何调用此方法?如果将this转换为类似的东西,包装函数的实现会是什么样子?templateWidget::WrapperWidget(std::stringformat_str,vector); 最佳答案 Widget::Widget函数实际上并不存在,它只是一个模板。只有在您指定参数的数量和类型后,函数才

c++ - 任意类的 const 和非 const 成员函数的模板包装器

我想要一个模板化类(包装器),它可以接受所有可能的类(T)并使用这些类(函数)的成员函数做一些事情(这里是求值)。我找到了类似的请求,你可以看到here和here,但均不能满足以下两个条件。条件:指向类实例的指针(T*ptr)和指向成员函数(function)的指针都必须在包装类中可访问。包装类应与const和非常量成员函数一起使用。这里的代码只适用于非常量:#include#includetemplatestructWrapper{Wrapper(T*ptrT);doubleevaluate(double);protected:T*myPtrT;};templateWrapper::

c++ - 结构包装。有没有自动的方法来做到这一点?

问题:是否有自动进行结构打包的方法?背景:Structurepacking对于降低某些基本数据的内存成本非常有用。基本上,这是通过重新排序内部数据来实现最小内存成本的技巧。我的问题是有没有一种自动方法可以做到这一点?比如我这里有一个structFoo(假设32bit)structFoo{charflag;char*p;shortnumber;};经过自动检查(是否为脚本,是否为native),我应该得到Foo的内存优化版本,即:structFoo{char*p;shortnumber;charflag;};这只是一个玩具示例。考虑下面更困难的情况,手动重新排序将是一项相当大的工作。结构

c++ - 努力编写 C API 的线程安全 C++ 包装器

我正在编写CAPI的“线程安全”C++包装器,而API本身不是内部线程安全的。我尝试过使用RAII。我想知道,我的实现是否正确?以及它是否是线程安全的。我感谢对我的代码的任何评论。提前致谢!要包装的CAPI如下,/*andatastructurewhichrepresentsaconnectionproxytothelogger:*/structcLog_Logger;/*connectthelogger,andreturnsahandletoit:*/cLog_Logger*cLog_connect();/*appendsazeroterminatedstringtothelog:*